Computing devices and other devices may have different capabilities and features based on the applications installed in their memory. Firmware and applications may be pre-installed to a computing device before purchase by a customer or installed after purchase by a customer or service technician via a storage media, such as a magnetic or optical disk. For computing devices that communicate with a computer network, applications may be installed after a customer or service technician downloads the applications to the computing device.
Wireless mobile devices, such as hand held cell phones, PDA's, non-handheld devices such as lap tops, or any other suitable wireless mobile devices may utilize JAVA applications or may be compliant with various standards and may be for example J2ME compliant devices. Such devices have security managers which enforce security policies which are a type of rule or rules to ensure that various security constraints are maintained within the device. One security policy may be that only certain applications supplied by certain authors or sources can invoke SMS messaging. Numerous other security policies are also known and enforced by the security policy manager. In addition, certain mobile device platforms may use defined JAVA specification requests (JSR) which is a set of API's defined for a particular mobile device operational platform. One JAVA specification for mobile devices is a J2ME compliant device that employs mobile information device profiles (MIDP). MIDlets are JAVA applications that run in a MIDP environment. An execution environment is a set of API's and rules governing its usage and security model that are defined for that particular type of an application. Therefore a MIDP environment is an environment that uses a defined set of JSR's and other API's.
There are multiple types of applications used on wireless mobile devices today. Some examples include MIDlet applications, Doja applications, Xlet applications, native applications, and others. Each different application may, for example, use a different set of APIs and libraries that are expected differ by the different types of applications. The different types of applications may be written in the same languages, or different languages. For example, Linux native applications, JAVA based MIDlet applications, binary run time environment applications and other different types of applications for example assume a certain set of features exist in a platform in a wireless mobile device. One type of application may expect a certain engine and associated libraries, whereas another application type may expect a different set of libraries and APIs and further, each application type may use a different security model. Wireless mobile devices need to support different application types and each application type may require an execution environment, security policies and API/libraries in the format that they expect. For example, where a wireless mobile device utilizes two or more JAVA execution environments, there may be different security models employed by the different execution environments.
Wireless operators for example want different types of applications to be supported within the same device and may also require the provisioning of additional application types after the device ships, such as by over the air provisioning. In addition, wireless operators may like to have upgrades of APIs also be made over the air if possible and also allow the control of security policies for the different application types. From the users perspective, the user of the wireless mobile device likely does not want to distinguish between different types of applications running on a given device.
However, from a wireless mobile device manufacturer's perspective, supporting multiple application types can be very expensive since there is development and testing costs associated with the different application types, additional flash/RAM sizes of the device which can vary and increase the costs, and there may be a different application life cycle interaction, security aspects and application management aspects that need to be addressed for each application type.
One way of handling multiple application types would be to duplicate sets of APIs, libraries and engines that are required by each application type, but with processor constrained and memory constrained devices such as wireless mobile devices RAM and Flash/Disk can be expensive and is typically a precious resource. Therefore duplicating such sets of libraries typically come at additional cost.
Devices are known for example that employ Linux Wine, which uses a set of libraries at run time that adapt Windows operating system APIs to APIs of a Linux operating system to allow one execution environment to communicate with another. These emulators typically emulate the instruction set at the hardware level and therefore are not portable when the underlying hardware changes and moreover these come at additional cost in terms of RAM and Flash.
Therefore a need exists for a method and apparatus that facilitates the running of different types of applications in a wireless mobile device.